package com.hngtrust.iir.company.service;

/*******************************************************************************
 * Package: com.hngtrust.iir.company.service
 * Type:    FinanceService
 * Date:    2021-5-26 9:45
 *
 * Copyright (c) 2021 HUANENG GUICHENG TRUST CORP.,LTD All Rights Reserved.
 *
 * You may not use this file except in compliance with the License.
 *******************************************************************************/

import com.hngtrust.iir.company.controller.vo.ListAssetDebtReqVO;
import com.hngtrust.iir.company.controller.vo.ListAssetDebtRespVO;
import com.hngtrust.iir.company.controller.vo.ListAssetStructRespVO;
import com.hngtrust.iir.company.controller.vo.ListCashFlowRespVO;
import com.hngtrust.iir.company.controller.vo.ListCashStructRespVO;
import com.hngtrust.iir.company.controller.vo.ListHolderReqVO;
import com.hngtrust.iir.company.controller.vo.ListProfitRespVO;
import com.hngtrust.iir.company.controller.vo.ListProfitStructRespVO;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

/**
 * 公司财务信息
 *
 * @author Chentianyong
 * @since 2021-05-26 10:50:29
 */

public interface FinanceService {
    
    /**
     * 公司资产负债表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListAssetDebtRespVO> listAssetDebt(ListAssetDebtReqVO req);
    
    /**
     * 公司资产负债表10年走势图
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListAssetDebtRespVO> listAssetDebtTrend(ListAssetDebtReqVO req);
    
    /**
     * 公司利润表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListProfitRespVO> listProfit(ListAssetDebtReqVO req);
    
    /**
     * 公司利润表10年走势图
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListProfitRespVO> listProfitTrend(ListAssetDebtReqVO req);
    
    /**
     * 公司现金流量表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListCashFlowRespVO> listCashFlow(ListAssetDebtReqVO req);
    
    /**
     * 公司现金流量表10年走势图
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListCashFlowRespVO> listCashFlowTrend(ListAssetDebtReqVO req);
    
    /**
     * 公司负债表结构分析
     *
     * @param req 实例对象
     * @return 对象列表
     */
    ListAssetStructRespVO listAssetStruct(ListHolderReqVO req);
    
    /**
     * 利润表结构分析
     *
     * @param req 实例对象
     * @return 对象列表
     */
    ListProfitStructRespVO listProfitStruct(ListHolderReqVO req);
    
    /**
     * 现金流量表结构分析
     *
     * @param req 实例对象
     * @return 对象列表
     */
    ListCashStructRespVO listCashStruct(ListHolderReqVO req);
    
    /**
     * 对数据做行列转换
     *
     * @param list 数据列表
     * @param type 数据类型 1年 2季
     * @param enumType 对应的枚举字段
     * @return 对象列表
     */
    List<Object> changeFinanceData(List<?> list,Integer type,Object[] enumType)throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException;

    /**
     * 财务信息结构分析
     * @param req
     * @return
     */
    List<ListAssetDebtRespVO> listFinaAnaly(ListAssetDebtReqVO req);
}
